﻿using System;
using System.Collections.Generic;

namespace PersonalTaskManager
{
    // 定义任务类
    public class TaskItem
    {
        public string Description { get; set; } // 任务描述
        public bool IsCompleted { get; set; }   // 任务完成状态

        // 构造函数
        public TaskItem(string description)
        {
            Description = description;
            IsCompleted = false; // 新任务默认未完成
        }

        // 重写ToString方法，方便输出任务信息
        public override string ToString()
        {
            string status = IsCompleted ? "[已完成]" : "[待完成]";
            return $"{status} {Description}";
        }
    }

    class Program
    {
        static List<TaskItem> tasks = new List<TaskItem>(); // 用于存储任务的集合

        static void Main(string[] args)
        {
            Console.WriteLine("***** 个人任务管理器 *****");
            bool isRunning = true;

            // 主循环
            while (isRunning)
            {
                ShowMenu();
                string input = Console.ReadLine();

                switch (input)
                {
                    case "1":
                        AddTask();
                        break;
                    case "2":
                        ViewTasks();
                        break;
                    case "3":
                        MarkTaskCompleted();
                        break;
                    case "4":
                        isRunning = false;
                        Console.WriteLine("感谢使用，再见！");
                        break;
                    default:
                        Console.WriteLine("无效选择，请重新输入。");
                        break;
                }
                Console.WriteLine();
            }
        }

        // 显示主菜单
        static void ShowMenu()
        {
            Console.WriteLine("请选择操作：");
            Console.WriteLine("1. 添加新任务");
            Console.WriteLine("2. 查看所有任务");
            Console.WriteLine("3. 标记任务为已完成");
            Console.WriteLine("4. 退出程序");
            Console.Write("请输入您的选择 (1-4): ");
        }

        // 添加新任务
        static void AddTask()
        {
            Console.Write("请输入任务描述: ");
            string description = Console.ReadLine();
            if (!string.IsNullOrWhiteSpace(description))
            {
                tasks.Add(new TaskItem(description));
                Console.WriteLine("任务添加成功！");
            }
            else
            {
                Console.WriteLine("任务描述不能为空。");
            }
        }

        // 查看所有任务
        static void ViewTasks()
        {
            if (tasks.Count == 0)
            {
                Console.WriteLine("当前没有任务。");
            }
            else
            {
                Console.WriteLine("您的任务列表：");
                for (int i = 0; i < tasks.Count; i++)
                {
                    Console.WriteLine($"{i + 1}. {tasks[i]}");
                }
            }
        }

        // 标记任务为已完成
        static void MarkTaskCompleted()
        {
            ViewTasks();
            if (tasks.Count > 0)
            {
                Console.Write("请输入要标记为完成的任务编号: ");
                if (int.TryParse(Console.ReadLine(), out int taskNumber) && taskNumber >= 1 && taskNumber <= tasks.Count)
                {
                    tasks[taskNumber - 1].IsCompleted = true;
                    Console.WriteLine($"任务 '{tasks[taskNumber - 1].Description}' 已被标记为完成。");
                }
                else
                {
                    Console.WriteLine("无效的任务编号。");
                }
            }
        }
    }
}